home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
newsgroups
/
misc.20000114-20000217
/
000135_news@columbia.edu _Mon Jan 24 18:27:33 2000.msg
< prev
next >
Wrap
Internet Message Format
|
2000-02-16
|
7KB
Return-Path: <news@columbia.edu>
Received: from newsmaster.cc.columbia.edu (newsmaster.cc.columbia.edu [128.59.59.30])
by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id SAA21897
for <kermit.misc@watsun.cc.columbia.edu>; Mon, 24 Jan 2000 18:27:32 -0500 (EST)
Received: (from news@localhost)
by newsmaster.cc.columbia.edu (8.8.5/8.8.5) id SAA20871
for kermit.misc@watsun.cc.columbia.edu; Mon, 24 Jan 2000 18:23:31 -0500 (EST)
X-Authentication-Warning: newsmaster.cc.columbia.edu: news set sender to <news> using -f
From: fdc@watsun.cc.columbia.edu (Frank da Cruz)
Subject: Case Study #15: File Selection
Date: 24 Jan 2000 23:23:30 GMT
Organization: Columbia University
Message-ID: <86imti$kc4$1@newsmaster.cc.columbia.edu>
To: kermit.misc@columbia.edu
A question we see posted on the newsgroups at least once a week is "how
do I delete files more than a week old?" Of course each operating system
might (or might not) have its own way of doing this; some straightforward
(like VMS's DELETE /BEFORE command), some not so obvious:
find <directoryname> -type f -mtime +7 -print | xargs rm
This is just one example of a larger class of problems: "how can I select
files for a particular action?".
C-Kermit 7.0 handles file selection in two ways: first by incorporating
the notion of "switches" into its command language, and second by its new,
more-powerful wildcard syntax. We might discuss wildcard syntax another
time (it's about what you get in csh or bash) but you can find out all
about it any time by typing "help wildcard" at the C-Kermit prompt.
Switches (command modifiers) should be familiar to anybody who has used
the command languages of DOS, VMS, TOPS-10 or TOPS-20, RT-11, RSX-11,
AOS/VS, and so on. Switches are optional keywords that begin with a
slash (/) and might also take an argument. For example:
delete /before:-1week *.log
Here "delete" is the command, "/before:" is the switch, "-1week" is the
switch argument, and "*.log" is the target of the command. This deletes
all files whose names end with ".log" in the current directory that are
more than a week old.
Let's see what other switches are offered by Kermit's DELETE command:
C-Kermit>delete ? File specification;
or switch, one of the following:
/after: /except: /noask /not-after:
/ask /heading /nodotfiles /not-before:
/before: /larger-than: /noheading /simulate
/dotfiles /list /nolist /smaller-than:
C-Kermit>delete
The name of each switch should be suggestive of its function, but of
course you can type "help delete" for a description of each switch.
The switches that are listed with a terminating colon (:) take arguments.
You can find out what the argument is by typing a question mark after the
colon:
C-Kermit>delete /before:? File-time
C-Kermit>delete /except:? Pattern
The /BEFORE, /AFTER, and related switches accept dates and/or times, which
can be given in almost any format that is not ambiguous, and you can also
give relative dates like "yesterday", "-12days", and "+2weeks".
The /EXCEPT switch lets you enter an exception list: one or more filenames
or patterns that should be excluded from the operation.
Here's an example:
delete /dotfiles /before:-1week /larger:10000 /except:*keep* *.log
This deletes all files, including dotfiles (like ".readme"), whose names
end with ".log" that are more than a week old and larger than 10000 bytes,
except the ones whose names include the word "keep".
In case you're unsure of yourself, you can include the /SIMULATE switch,
which tells C-Kermit to list the files it WOULD have deleted without
actually deleting them.
Of course file-selection (and other) switches are not only for the DELETE
command. Most of C-Kermit's file transfer and management commands now have
switches; for example, the SEND command:
C-Kermit>send ? Filename, or switch, one of the following:
/after: /except: /nodotfiles /recursive
/array: /filter: /not-after: /rename-to:
/as-name: /filenames: /not-before: /smaller-than:
/before: /larger-than: /pathnames: /starting-at:
/binary /listfile: /print: /subject:
/command /mail: /protocol: /text
/delete /move-to: /quiet
/dotfiles /nobackup /recover
C-Kermit>send
Or the new PURGE command, for managing those annoying backup files:
C-Kermit>purge ? Filename or switch, one of the following:
/after: /heading /nodotfiles /not-before:
/ask /keep: /noheading /page
/before: /larger-than: /nolist /recursive
/dotfiles /list /nopage /simulate
/except: /noask /not-after: /smaller-than:
C-Kermit>purge
Or the new built-in DIRECTORY command:
C-Kermit>dir ? File specification; or switch, one of the following:
/after: /englishdate /noheading /recursive
/all /except: /nomessage /reverse
/array: /files /nopage /smaller-than:
/ascending /heading /norecursive /sort:
/backup /isodate /nosort /xfermode
/before: /larger-than: /not-after: /verbose
/brief /message: /not-before:
/directories /nobackup /noxfermode
/dotfiles /nodotfiles /page
C-Kermit>dir
You can use switches in any desired combination to obtain results you
couldn't get before. Returning to our original example, let's say that
rather than deleting files that are more than a week old, we want to move
them to another computer. Assuming the connection is already made and the
other Kermit is in server (or receive) mode, the command is deceptively
simple:
send /delete /before:-1week *.*
But remember all that's going on behind the scenes:
. Automatic per-file text/binary-mode switching
. File timestamp and permission preservation
. Atomic file movement
And so on; most of this has been covered in previous installments.
To read all about switches, see Section 1.5 of the ckermit2.txt file.
Section 1.6 explains date/time formats. The DIRECTORY command is
described in Section 4.5.1 and the DELETE and PURGE commands in Section
4.5.4. File-transfer command switches are documented in Section 4.7.
The new wildcard syntax is covered in Section 4.9.
- Frank